<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>在对象中使用解构赋值</title>
</head>
<body>
    <script>

        let name = 'mks';

        let obj = {
            name:'mikaisa',
            age:18
        }

        /*
            对象的解构赋值没有顺序的要求，只要属性名可以对应上就行
            用哪个就取哪个，不需要全写
            如果变量名有冲突，比如name在上面声明过，可以name:xxxx，这样就代表去obj中找name属性的值，然后赋给xxxx变量。
            其实说到这里你应该意识到了，其实没有变量冲突就可以只写属性名的原因就是它触发了简写形式
            当然也可以设置默认值，如果对象中没找到匹配的就取默认值
        */
        let {age,name:name2,sex='男'} = obj;
        console.log(name,age);


        // 再看一个开发中常见的场景
        let data = {
            msg:'我是一个小鲨鱼',  
            date:'2023年',
            code:200
        };

        // 解构赋值是可以这样用的, 而且很好用. 这样你就不用在函数里里面去解构赋值了
        function getData({msg,date}){
            console.log(msg,date);
        }
        getData(data);
    </script>
</body>
</html>